import { reqGoodsInfo,reqAddOrUpdateShopCart } from "@/api";
// 封装游客身份模块uuid --- 生成一个随机字符串
import {getUUID} from "@/utils/uuid_token"
const state = {
     // 仓库的初始状态
     goodInfo: {},
     // uuid临时游客身份(只需执行一次)
     uuid_token: getUUID()
};
const mutations = {
     // 产品信息
     GETGOODINFO(state, goodInfo) {
          state.goodInfo = goodInfo
     },
};
const actions = {
     // 获取产品信息
     async getGoodInfo({ commit }, skuId) {
          let result = await reqGoodsInfo(skuId)
          if (result.code == 200) {
               commit('GETGOODINFO', result.data)
          }
     },
     // 将产品添加到购物车中
     async addOrUpdateShopCart({commit},{skuId,skuNum}){
          // 加入购物车返回的解构
          // 加入购物车以后（发请求），前台将参数带给服务器
          // 服务器写入数据成功，并没有返回其他数据（data：Null） 只是返回code=200， 代表这次操作成功
          // 因为服务器没有返回其余的数据 因此不需要三连环存储数据
          // 注意：async函数执行返回的结果一定是一个promise
          let result = await reqAddOrUpdateShopCart(skuId,skuNum)
          // 代表服务器加入购物车成功
          if (result.code == 200) {
               return "ok"
          }else {
               // 代表加入购物车失败
               return Promise.reject(new Error('faile'))
          }
     }
};
 // 简化数据而生
const getters = {
     // 路径导航简化数据
     categoryView(state){
          // state.goodInfo初始状态为空对象，空对象的categoryView属性值为underfined 所以加上||{} 这样不会报错
          return state.goodInfo.categoryView||{}
     },
     // 简化产品信息的数据
     skuInfo(state){
          return state.goodInfo.skuInfo||{}
     },
     // 产品售卖属性的简化
     spuSaleAttrList(state){
          return state.goodInfo.spuSaleAttrList||{}
     }
};

export default {
     state,
     mutations,
     actions,
     getters
}

